תוכנה 1 תרגול 2: מערכים ומבני בקרה

Similar documents
תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Loop through Arrays. Array Creation and Initialization

הנכות 1 תואיגש םע תודדומתהו תואלול,םיכרעמ : לו 2 גרת

הנכות 1 תואיגש םע תודדומתהו תואלול,םי : כרעמ 2 לוגרת

תוכנה 1 3 תרגול מס' מערכים ומבני בקרה

תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Array Creation and Initialization. Loop through Arrays

תוכנה 1 תרגול 2: מערכים, מבני בקרה ושגיאות

תוכנה 1 טיפוסי השפה טיפוסים לא פרימיטיביים הטיפוסים הפרימיטיביים מחרוזות המרה למספרים תרגול 2: טיפוסי שפה, מחרוזות, מערכים ושגיאות

Ohad Barzilay and Oranit Dror

Sun שיטת הגמל: "isodd" "is_odd" Sun. תוכנה 1 בשפת Java אוניברסיטת תל אביב

מערכים שעור מס. 4 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1

הנכות 1 םוכיס לוגרת 14 1

תוכנה 1 סמסטר א' תשע"א

תוכנה 1. תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

This cheat sheet is aimed at people with some experience in eclipse but who may not be aware of many of its features.

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

הנכות 1 םוכיס לוגרת 13 1

מבוא לתכנות ב- JAVA תרגול 7

Java Programming Language Mr.Rungrote Phonkam

תזכורת: עץבינארי מבוא למדעי המחשב הרצאה 24: עצי חיפוש בינאריים

הקלחמ ה תמרב ת ונ וכ ת (static members ) יליזרב דהוא Java תפשב ם דקת מ תונכת ביבא ל ת תטיסרבינוא

Data Types. 9. Types. a collection of values and the definition of one or more operations that can be performed on those values

תור שימושים בעולם התוכנה

COMP-202: Foundations of Programming. Lecture 13: Recursion Sandeep Manjanna, Summer 2015

משתנים שעור מס. 2 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

הנכות 1 םוכיס לוגרת 13 1

CS Programming I: Arrays

תוכנה 1 * לא בהכרח בסדר הזה

היצביט ומ - ןוכית ת וי נבת

Practical Session - Heap

Notes - Recursion. A geeky definition of recursion is as follows: Recursion see Recursion.

C212 Early Evaluation Exam Mon Feb Name: Please provide brief (common sense) justifications with your answers below.

מבוא למדעי המחשב תרגול 8 רשימה משורשרת כללית, Comparator

תכנות מונחה עצמים משחקים תשע"ו

Syntax and Variables

PROGRAMMING FUNDAMENTALS

News and information! Review: Java Programs! Feedback after Lecture 2! Dead-lines for the first two lab assignment have been posted.!

Recursion Enums. Basics of Programming 1. Department of Networked Systems and Services G. Horváth, A.B. Nagy, Z. Zsóka, P. Fiala, A.

CMIS 102 Hands-On Lab

סכום (סדרת ערכים) אחרת - דוגמא: סכום-ספרות (num) אם < 10 num החזר 1 או אם = 0 = num החזר 0 public static int numofdigits (int num)

What you learned so far. Loops & Arrays efficiency for statements while statements. Assignment Plan. Required Reading. Objective 2/3/2018

Decision-Making and Repetition

Just Enough Eclipse What is Eclipse(TM)? Why is it important? What is this tutorial about?

הנכות 1 םוכיס לוגרת 13 1

Asks for clarification of whether a GOP must communicate to a TOP that a generator is in manual mode (no AVR) during start up or shut down.

מצליחה. 1. int fork-bomb() 2. { 3. fork(); 4. fork() && fork() fork(); 5. fork(); printf("bla\n"); 8. return 0; 9. }

מחרוזות ב Java ותכנות מונחה בדיקות )Test Driven Development(

1. Introduction to Java for JAS

Exam 2 ITEC 120 Principles of Computer Science I Spring: 2017

Pace University. Fundamental Concepts of CS121 1

Programming Basics. Digital Urban Visualization. People as Flows. ia

Array. Array Declaration:

ECSE 321 Assignment 2

i.e.: n! = n (n 1)

תוכנה 1 * לא בהכרח בסדר הזה

CSE 341 Section Handout #6 Cheat Sheet

Lecture 6. Drinking. Nested if. Nested if s reprise. The boolean data type. More complex selection statements: switch. Examples.

Array. Lecture 12. Based on Slides of Dr. Norazah Yusof

Recursion CSCI 136: Fundamentals of Computer Science II Keith Vertanen Copyright 2011

Practical Session No. 14 Topological sort,amortized Analysis

מבוא לתכנות ב- JAVA מעבדה 3. Ipc161-lab3

Q1 Q2 Q3 Q4 Q5 Total 1 * 7 1 * 5 20 * * Final marks Marks First Question

Recursion. Overview. Mathematical induction. Hello recursion. Recursion. Example applications. Goal: Compute factorial N! = 1 * 2 * 3...

High Performance Computing

Lesson 36: for() Loops (W11D1)

Definition: Data Type A data type is a collection of values and the definition of one or more operations on those values.

Budget Transfers. To initiate a budget transfer, go to FGAJVCM (Journal Voucher Mass Entry). FGAJVCM

HPE Security Data Security. HPE SecureData. Product Lifecycle Status. End of Support Dates. Date: April 20, 2017 Version:

Java Bytecode (binary file)

Basic computer skills such as using Windows, Internet Explorer, and Microsoft Word. Chapter 1 Introduction to Computers, Programs, and Java

Arrays. Arrays. Wolfgang Schreiner Research Institute for Symbolic Computation (RISC) Johannes Kepler University, Linz, Austria

More Binary Search Trees AVL Trees. CS300 Data Structures (Fall 2013)

CS113: Lecture 3. Topics: Variables. Data types. Arithmetic and Bitwise Operators. Order of Evaluation

CompSci 125 Lecture 11

Data Structures Brett Bernstein. Lecture 1: Introduction and a Review/Enrichment of CS 101

CS171:Introduction to Computer Science II

תוכנה 1 תרגול מספר 13

תוכנה 1 תרגול מספר 13

Lecture 14 CSE11 Fall 2013 For loops, Do While, Break, Continue

More BSTs & AVL Trees bstdelete

Object oriented programming. Instructor: Masoud Asghari Web page: Ch: 3

מבוא לתכנות ב- JAVA תרגול 6

ASP.Net Web API.

All King County Summary Report

34. Recursion. Java. Summer 2008 Instructor: Dr. Masoud Yaghini

מבוא לתכנות ב- JAVA תרגול 5. Ipc161- practical session 5

מבוא לתכנות תוכנית שעור מס. 1 1 דר' דרור טובי, המרכז האוניברסיטאי אריאל בשומרון.

Recursion. Fundamentals of Computer Science

Arrays III and Enumerated Types

Lecture Notes: ESC 101

Lecture Notes CPSC 224 (Spring 2012) Today... Java basics. S. Bowers 1 of 8

Practice with variables and types

TESTING AND DEBUGGING

recursive algorithms 1

Object-Oriented Programming and Design D0010E. Interactive lecture 2. Overview of the lecture. Writing larger classes Documentation Recursion

Undergraduate Admission File

Recursive Definitions

Wentworth Institute of Technology COMP1050 Computer Science II Spring 2017 Derbinsky. Recursion. Lecture 13. Recursion

Scientific Programming in C X. More features & Fortran interface

Transcription:

תוכנה 1 תרגול 2: מערכים ומבני בקרה

2 Useful Eclipse Shortcuts Ctrl+1 quick fix for errors, or small refactoring suggestions Ctrl+SPACE code content assist (auto-completion) Auto completion for main create a template for main function Auto completion for sysout system.out.println() Auto completion for for loop structures And many more, see Window > Preferences > Java > Editor > Content assist > templates Ctrl+Shift+S save changes in all open files Ctrl+Shift+F auto-formatting of the code (always use it before you submit your HW!) Ctrl+Shift+O organize imports (which allows using external classes) Ctrl+F11 run, F11 debug Alt+Shift+R rename (a variable, method, class) All the shortcuts are listed (and can be customized in Window > Preferences > General > Keys

3 מערכים Array: A fixed-length data structure for storing multiple values of the same type Example from last week: An array of odd numbers: Indices (start from 0) 0 1 2 3 4 5 6 7 odds: 1 3 5 7 9 11 13 15 The type of all elements is int odds.length == 8 The value of the element at index 4 is 9: odds[4] == 9

4 Array Variables An array is denoted by the [] notation Examples: int[] odds; int odds[]; String[] names; // legal but discouraged int[][] matrix; // an array of arrays matrix:

5 Array Creation and Initialization What is the output of the following code: int[] odds = new int[8]; for (int i = 0; i < odds.length; i++) { Output: System.out.print(odds[i] + " "); odds[i] = 2 * i + 1; System.out.print(odds[i] + " "); 0 1 0 3 0 5 0 7 0 9 0 11 0 13 0 15 Array creation: all elements get the default value for their type (0 for int)

6 Array Creation and Initialization Creating and initializing small arrays with a- priori known values: int[] odds = {1,3,5,7,9,11,13,15; String[] months = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "July", "Aug", "Sep", "Oct", "Nov", "Dec"; Jan months:

7 Loop through Arrays By promoting the array's index: for (int i = 0; i < months.length; i++) { foreach: System.out.println(months[i]); for (String month: months) { System.out.println(month); The variable month is assigned the next element in each iteration

8 Operations on arrays The class Arrays provide operations on array Copy Sort Search Fill... java.util.arrays http://docs.oracle.com/javase/8/docs/api/java/util/arrays.html

9 Copying Arrays Assume: int[] array1 = {1,2,3; int[] array2 = {8,7,6,5; Naïve copy: array1 = array2; 8,7,6,5 array2 1,2,3 array1 What s wrong with this solution?

10 Copying Arrays Arrays.copyOf the original array the length of the copy int[] arr1 = {1, 2, 3; int[] arr2 = Arrays.copyOf(arr1, arr1.length); Arrays.copyOfRange the original array initial index of the range to be copied, inclusive final index of the range to be copied, exclusive

11 Question What is the output of the following code: int[] odds = {1, 3, 5, 7, 9, 11, 13, 15; int newodds[] = Arrays.copyOfRange(odds, 1, odds.length); for (int odd: newodds) { System.out.print(odd + " "); Output: 3 5 7 9 11 13 15

12 2D Arrays There are no 2D arrays in Java but you can build array of arrays: char[][] board = new char[3][]; for (int i = 0; i < 3; i++) board[i] = new char[3]; Or equivalently: char[][] board = new char[3][3]; board

14 2D Arrays A compact multiplication table: int[][] table = new int[10][]; for (int i = 0; i < 10; i++) { table[i] = new int[i + 1]; for (int j = 0; j <= i; j++) { table[i][j] = (i + 1) * (j + 1); 3 6 9 2 4 table 1

Fibonacci Fibonacci series 1, 1, 2, 3, 5, 8, 13, 21, 34 Definition: fib(0) = 1 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2) en.wikipedia.org/wiki/fibonacci_number

16 If-Else Statement public class Fibonacci { /** Returns the n-th Fibonacci element */ public static int computeelement(int n) { if (n==0) return 1; else if (n==1) return 1; else return computeelement(n-1) + computeelement(n-2); Assumption: n 0 Can be removed

18 Switch Statement public class Fibonacci { /** Returns the n-th Fibonacci element */ public static int computeelement(int n) { switch(n) { case 0: return 1; case 1: return 1; break; default: Compilation Error: Unreachable Code Assumption: n 0 return computeelement(n-1) + computeelement(n-2);

19 Iterative Fibonacci A loop instead of a recursion static int computeelement(int n) { if (n == 0 n == 1) return 1; int prev = 1; int prevprev = 1; int curr; for (int i = 2 ; i < n ; i++) { curr = prev + prevprev; prevprev = prev; prev = curr; curr = prev + prevprev; return curr; Assumption: n 0 1 1 2 1 2 3 2 3 5 prevprev prev curr

20 נתונים במקום חישוב בתרגום רקורסיה ללולאה אנו משתמשים במשתני עזר לשמירת המצב curr, prev ו- prevprev הלולאה דיון: "זוכרת" את הנקודה שבה אנו נמצאים בתהליך החישוב יעילות לעומת פשטות. עיקרון ה- KISS )keep it simple stupid( תרגיל: כתבו את השירות computeelement )curr בלבד )ללא prevprev בעזרת prev ו-

21 For Loop Printing the first n elements: public class Fibonacci { public static int computeelement(int n) { It is better to use args[0] public static void main(string[] args) { for(int i = 0 ; i < 10 ; i++) { System.out.println(computeElement(i));

22 מודולריות, שכפול קוד ויעילות יש כאן חוסר יעילות מסוים: לולאת ה- for חוזרת גם ב- main וגם ב-.computeElement לכאורה, במעבר אחד ניתן גם לחשב את האיברים וגם להדפיס אותם כמו כן כדי לחשב איבר בסדרה איננו משתמשים בתוצאות שכבר חישבנו )של איברים קודמים( ומתחילים כל חישוב מתחילתו

23 מודולריות, שכפול קוד ויעילות מתודה )פונקציה( ערוב של חישוב צריכה לעשות דבר אחד בדיוק! והדפסה פוגע במודולריות )מדוע?( היזהרו משכפול קוד! קטע קוד דומה המופיע בשתי פונקציות שונות יגרום במוקדם או במאוחר לבאג בתוכנית )מדוע?( את בעיית היעילות )הוספת מנגנון בעזרת מערכים )תרגיל( )memoization אפשר לפתור

24 for vs. while The following two statements are almost equivalent: Variable i is not defined outside the for block for(int i = 0 ; i < n ; i++) System.out.println(computeElement(i)); int i=0; while (i < n) { System.out.println(computeElement(i)); i++;

25 while vs. do while The following two statements are equivalent if and only if n>0 : int i=0; while (i < n) { System.out.println(computeElement(i)); i++; int i=0; do { System.out.println(computeElement(i)); i++; while (i>n(;

Compilation vs. Runtime Errors 26 שגיאות קומפילציה )הידור(: שגיאות שניתן הקובץ והפיכתו ל- bytecode ע"י המהדר "לתפוס" בעת קריאת Syntax error on token "Class", class expected Class MyClass { void f() { int n=10; void g() { int m = 20; int i; System.out.println(i); דוגמאות: Syntax error, insert "" to complete MethodBody בדרך כלל קשורות ל: 26 תחביר, תאימות טיפוסים, הגדרה לפני שימוש

27 Compilation vs. Runtime Errors שגיאות זמן ריצה: לא ניתן לדעת שתהיה שגיאה במקום ספציפי בזמן ההידור )קומפילציה( a = new int[20]; int a[] = new int[10]; a[15] = 10; String s = null; System.out.println(s.length()); דוגמאות: מתקשר למנגנון החריגים,)exceptions( עליו נלמד בהמשך 27

28 Compilation vs. Runtime Errors האם יש עוד סוג של טעויות? כן, הכי גרועות, טעויות לוגיות בתוכנית public class Factorial { /** calculate x! **/ public static int factorial(int x) { int f = 0; for (int i = 2; i <= x; i++) f = f * i; return f; 28

הסוף...